package com.iceclean.dao;

import com.iceclean.po.Post;

import java.util.List;

/**
 * @author : Ice'Clean
 * @date : 2021-05-04
 *
 * 贴子表操作接口
 */
public interface PostDao {

    /**
     * 通过贴子 id 寻找贴子
     * @param postId 贴子 id
     * @return 贴子实例对象
     */
    Post findPostById(int postId);

    /**
     * 通过页数寻找指定贴吧的贴子（已删除的或正常的）
     * @param postBarId 所属贴吧
     * @param page 页数
     * @param num 每页的数目
     * @param postDelete 贴子的删除标识
     * @param sortClass 排序的种类
     * @param sortWay 排序的方式
     * @return 符合条件的贴子
     */
    List<Post> findPostsByPage(int postBarId, int page, int num, int postDelete, String sortClass, String sortWay);

    /**
     * 通过页数寻找指定用户发布的贴子
     * @param userId 所属用户
     * @param page 页数
     * @param num 每页的数目
     * @return 符合条件的贴子
     */
    List<Post> findUserPostsByPage(int userId, int page, int num);

    /**
     * 通过页数和搜索字段查询指定贴吧的贴子（模糊搜索）
     * @param postBarId 贴吧 id
     * @param search 搜索字段
     * @param page 页数
     * @param num 每页的数目
     * @param sortClass 排序的种类
     * @param sortWay 排序的方式
     * @return 符合条件的贴子集合
     */
    List<Post> searchPostByPage(int postBarId, String search, int page, int num, String sortClass, String sortWay);

    /**
     * 获取搜索到的贴子总数
     * @param postBarId 贴吧 id
     * @param search 搜索字段
     * @return 以该字段在贴吧内搜索到的贴子总数
     */
    int getAllSearchForNumber(int postBarId, String search);

    /**
     * 获取贴吧内所有被删除的贴子的数量
     * @param postBarId 目标贴吧 id
     * @return 符合条件的贴子的数量
     */
    int getAllDeletePostForNumber(int postBarId);

    /**
     * 创建新贴子
     * @param post 贴子实体
     * @return 新贴子的 id
     */
    int createPost(Post post);

    /**
     * 更新贴子
     * @param post 需要更新的贴子（存放了已经更新的内容）
     * @return 是否更新成功
     */
    boolean updatePost(Post post);
}
